Ext.BLANK_IMAGE_URL = '/static/images/common/s.gif';

Ext.onReady(function() {
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';
	var winEdit;
	var winCreate;

	var customer_select = new Ext.data.Store({
				url : '../customer/listFollowingCustomerAjax.action',
				reader : new Ext.data.JsonReader({
							root : 'values'
						}, [{
									name : 'customerId',
									type : 'int'
								}, {
									name : 'name',
									type : 'string'
								}])
			});

	var customerListComboBox = new Ext.form.ComboBox({
				id : 'customerId',
				name : 'serviceRecord.customerId',
				hiddenName : 'serviceRecord.customerId',
				width : 200,
				valueField : 'customerId',
				displayField : 'name',
				emptyText : '--请选择--',
				editable : false,
				selectOnFocus : true,
				mode : 'remote',
				store : customer_select,
				triggerAction : 'all',
				loadingText : '加载中...',
				fieldLabel : '客户名称',
				allowBlank : false
			});

	var text_search_service = new Ext.form.TextField({
				name : 'textSearchService',
				width : 200,
				emptyText : '通过售后服务内容查询,全模糊',
				listeners : {
					'specialkey' : function(field, e) {
						if (e.getKey() == Ext.EventObject.ENTER) {
							searchService();
						}
					}
				}
			});

	var searchService = function() {
		ds.baseParams.searchContent = text_search_service.getValue();
		ds.load({
					params : {
						start : 0,
						limit : 20
					}
				});
	}

	var btn_search_service = new Ext.Button({
				text : '查询',
				iconCls : 'icon-search',
				handler : searchService
			});

	/** 新建售后服务记录提交表单操作 */
	var createSubmitForm = function() {
		if (createForm.getForm().isValid()) {
			createForm.form.submit({
						url : 'addServiceRecord.action',
						method : 'POST',
						waitMsg : '正在处理你的请求......',
						success : function(form, action) {
							try {
								var flag = action.result.success;
								Ext.MessageBox.alert('提示',
										action.result.message);
								if (flag === true) {
									winCreate.hide();
									form.reset();
									grid.store.reload({
												params : {
													start : 0,
													limit : 20
												}
											});
								}
							} catch (e) {
								Ext.MessageBox.alert('提示',
										'对不起，您无法连接系统，如果您的网络正常，请联系系统管理员！');
							}
						},
						failure : function(form, action) {
							try {
								Ext.MessageBox.alert('提示',
										action.result.message);
							} catch (e) {
								Ext.MessageBox.alert('提示',
										'对不起，您无法连接系统，如果您的网络正常，请联系系统管理员');
							}
						}
					});
		}
	}

	var createWin = function() {
		if (!winCreate) {
			winCreate = new Ext.Window({
						applyTo : 'create-win',
						iconCls : 'icon-add',
						autoHeight : true,
						resizable : false,
						width : 500,
						height : 300,
						closeAction : 'hide',
						plain : true,
						items : [createForm]
					});
		}
		winCreate.show('createBtn');
	}

	/** 新建售后服务记录Form */
	var createForm = new Ext.form.FormPanel({
				id : 'createForm',
				baseCls : 'x-plain',
				frame : true,
				labelAlign : 'right',
				buttonAlign : 'center',
				defaults : {
					labelSeparator : '：'
				},
				bodyStyle : 'padding:5px 5px 0',
				items : [{
							id : 'create_service_field',
							name : 'serviceInfo',
							title : '售后服务记录信息',
							xtype : 'fieldset',
							defaultType : 'textfield',
							autoHeight : true,
							items : [{
										name : 'serviceRecord.serviceRecordId',
										fieldLabel : '记录编号',
										hidden : true,
										hideLabel : true
									}, customerListComboBox, {
										name : 'serviceRecord.salesName',
										fieldLabel : '业务员名称',
										width : '110',
										value : crrentUser,
										disabled : true,
										allowBlank : false
									}, new Ext.form.DateField({
												name : 'serviceRecord.gmtService',
												fieldLabel : '售后服务时间',
												width : 113,
												format : 'Y-m-d',
												emptyText : '请选择日期 ...',
												allowBlank : false
											}), {
										name : 'serviceRecord.content',
										fieldLabel : '售后服务内容',
										xtype : 'textarea',
										width : '300',
										allowBlank : false
									}]
						}],
				buttons : [{
							text : '提交',
							handler : createSubmitForm
						}, {
							text : '重置',
							handler : function() {
								Ext.MessageBox.confirm('确认提示',
										'此操作将置空所有内容，你将继续吗？', function(btn) {
											if (btn == "yes")
												createForm.getForm().reset();
										});
							}
						}]
			});

	var editFormPanel = new Ext.form.FormPanel({
				id : 'editForm',
				baseCls : 'x-plain',
				frame : true,
				labelAlign : 'right',
				buttonAlign : 'center',
				defaults : {
					labelSeparator : '：'
				},
				bodyStyle : 'padding:5px 5px 0',
				items : [{
							id : 'edit_service_field',
							name : 'serviceInfo',
							title : '售后服务记录信息',
							xtype : 'fieldset',
							defaultType : 'textfield',
							autoHeight : true,
							items : [{
										name : 'serviceRecord.serviceRecordId',
										id : 'serviceRecordId',
										fieldLabel : '记录编号',
										hidden : true,
										hideLabel : true
									}, {
										name : 'serviceRecord.customerName',
										id : 'customerName',
										fieldLabel : '客户名称',
										width : '200',
										allowBlank : false
									}, {
										name : 'serviceRecord.salesName',
										id : 'salesName',
										fieldLabel : '业务员名称',
										value : crrentUser,
										disabled : true,
										width : '200',
										allowBlank : false
									}, {
										name : 'serviceRecord.content',
										id : 'content',
										fieldLabel : '售后服务内容',
										xtype : 'textarea',
										width : '300',
										allowBlank : false
									}]
						}],
				buttons : [{
					text : '提交',
					handler : function() {
						if (editFormPanel.getForm().isValid()) {
							editFormPanel.getForm().submit({
								url : 'editServiceRecord.action',
								method : 'POST',
								waitMsg : '正在处理你的请求......',
								success : function(form, action) {
									try {
										Ext.MessageBox.alert('提示',
												action.result.message);
										if (action.result.success === true) {
											winEdit.hide();
											form.reset();
											grid.store.reload({
														params : {
															start : 0,
															limit : 20
														}
													});
										}
									} catch (e) {
										Ext.MessageBox
												.alert('提示',
														'对不起，您无法连接系统，如果您的网络正常，请联系系统管理员！');
									}
								},
								failure : function(form, action) {
									Ext.MessageBox.alert('提示',
											action.result.message);
								}
							});
						}

					}
				}, {
					text : '关闭',
					handler : function() {
						this.ownerCt.ownerCt.hide();
					}
				}]
			});

	/** 修改售后服务记录 */
	function editWin() {
		if (grid.getSelectionModel().getCount() <= 0) {
			Ext.MessageBox.alert('提示', '请先选中一条售后服务记录。');
			return;
		}

		if (!winEdit) {
			winEdit = new Ext.Window({
						applyTo : 'edit-win',
						autoHeight : true,
						iconCls : 'icon-edit',
						resizable : false,
						width : 500,
						height : 300,
						closeAction : 'hide',
						plain : true,
						items : [editFormPanel]
					});
		}

		var record = grid.getSelectionModel().getSelected();
		if (record) {
			editFormPanel.getForm().loadRecord(record);
		}

		winEdit.show('editBtn');
	}

	/** 查看售后服务记录 */

	/** 删除售后服务记录 */
	var deleteCu = function() {
		if (grid.getSelectionModel().getCount() <= 0) {
			Ext.MessageBox.alert('提示', '请先选中一条售后服务记录。');
			return;
		}

		var record = grid.getSelectionModel().getSelected();
		Ext.MessageBox.confirm('确认提示', '此操作将删除选中的售后服务记录，你将继续吗？', function(btn) {
			if (btn == "yes")
				Ext.Ajax.request({
							url : 'deleteServiceRecord.action',
							longdingText : '正在删除，请稍候……',
							success : function(response, options) {
								var responseArray = Ext.util.JSON
										.decode(response.responseText);
								var flag = responseArray.success;
								Ext.MessageBox.alert('提示',
										responseArray.message);
								if (flag) {
									grid.store.reload({
												params : {
													start : 0,
													limit : 20
												}
											});
								}
							},
							failure : function() {
								Ext.MessageBox.alert('提示', '对不起，删除操作失败，请检查网络。');
							},
							params : {
								serviceRecordId : record.data.serviceRecordId
							}
						});
		});
	}

	/** columnModel 定义 */
	var cm = new Ext.grid.ColumnModel([{
				header : "记录编号",
				width : 50,
				dataIndex : 'serviceRecordId'
			}, {
				header : "客户名称",
				width : 200,
				dataIndex : 'customerName'
			}, {
				header : "业务员名称",
				width : 200,
				dataIndex : 'salesName'
			}, {
				header : "售后服务内容",
				width : 200,
				dataIndex : 'content'
			}, {
				header : "售后服务时间",
				width : 100,
				dataIndex : 'gmtService',
				renderer : function(value, atts) {
					return new Date(value).format('Y-m-d');
				}
			}]);

	/** store 定义 */
	var ds = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : 'listAllServiceRecordAjax.action'
						}),
				reader : new Ext.data.JsonReader({
							totalProperty : 'total',
							root : 'values'
						}, [{
									name : 'serviceRecordId'
								}, {
									name : 'customerName'
								}, {
									name : 'salesName'
								}, {
									name : 'content'
								}, {
									name : 'gmtService'
								}])
			});

	ds.load({
				params : {
					start : 0,
					limit : 20
				}
			});

	var grid = new Ext.grid.GridPanel({
				ds : ds,
				cm : cm,
				sm : new Ext.grid.RowSelectionModel({
							singleSelect : true
						}),
				id : 'listServiceRecord',
				title : '售后服务记录列表',
				autoHeight : true,
				border : true,
				width : '100%',
				loadMask : true,
				stripeRows : true,
				frame : true,
				tbar : new Ext.Toolbar({
							id : 'opbar',
							autoHeight : true,
							items : [new Ext.Toolbar.Button({
												id : 'createBtn',
												text : '新建',
												iconCls : 'icon-add',
												handler : createWin
											}), '-', new Ext.Toolbar.Button({
												id : 'editBtn',
												iconCls : 'icon-edit',
												text : '修改',
												handler : editWin
											}), '-', new Ext.Toolbar.Button({
												text : '删除',
												iconCls : 'icon-delete',
												handler : deleteCu
											}), '-', text_search_service, '-',
									btn_search_service]
						}),
				bbar : new Ext.PagingToolbar({
							id : 'pagingbar',
							pageSize : 20,
							store : ds,
							displayInfo : true,
							displayMsg : '显示第 {0}条到 {1}条记录，一共 {2}条',
							emptyMsg : "没有记录"
						})
			});

	grid.on('rowdblclick', function(sm, rowIdx, r) {
				editWin();
			});

	var viewport = new Ext.Viewport({
				layout : 'border',
				items : [{
							region : 'center',
							items : [grid]
						}]
			});

});
